using System.Web.Mvc;
using Telerik.Web.Mvc;
using Nop.Web.Framework;
using Nop.Core.Domain.Logistics;
using System.Collections.Generic;

namespace Nop.Admin.Models.Logistics
{
    public class PlanningOverviewModel
    {
        public PlanningOverviewModel()
        {
            AvailableLogisticAreas = new List<SelectListItem>();
            AvailableCouriersFilters = new List<SelectListItem>();
            AvailableWarehouses = new List<SelectListItem>();
            WarehouseId = -1; // initial value is invalid.
            DistrictId = -1; // initial value is invalid.
        }

        public GridModel<LogisticsPackageModel> Packages { get; set; }

		[NopResourceDisplayName("Admin.Logistics.SelectedDistrict")]
		public int SelectedDistrictId { get; set; }

		[NopResourceDisplayName("Admin.Logistics.SelectedTimeSpan")]
		public int[] SelectedTimeSpans { get; set; }

		[NopResourceDisplayName("Admin.Logistics.TimeSpan")]
		public string TimeSpan { get; set; }

        [NopResourceDisplayName("Admin.Logistics.LogisticArea")]
        public string LogisticArea { get; set; }  // contains a join(",") list of areas.

        [NopResourceDisplayName("Admin.Logistics.SearchCourierFilter")]
        public string SearchCourierFilter { get; set; }

        [NopResourceDisplayName("Admin.Logistics.Courier")]
        public int CourierId { get; set; }

        [NopResourceDisplayName("Admin.Logistics.Warehouse")]
        public int WarehouseId { get; set; }

        [NopResourceDisplayName("Admin.Logistics.District")]
        public int DistrictId { get; set; }
        public string DistrictName { get; set; }

        [NopResourceDisplayName("Admin.Logistics.DisplayNotReady")]
        public bool DisplayNotReady { get; set; }

        [NopResourceDisplayName("Admin.Logistics.Plan.Fields.InWarehouseOnly")]
        public bool InWarehouseOnly { get; set; }

        [NopResourceDisplayName("Admin.Logistics.Plan.Fields.IncludeMaxDeliveryAttempt")]
        public bool IncludeMaxDeliveryAttempt { get; set; }

        public IList<SelectListItem> AvailableLogisticAreas { get; set; }
        public IList<SelectListItem> AvailableCouriersFilters { get; set; }
        public IList<SelectListItem> AvailableWarehouses { get; set; }			
		public IList<SelectListItem> AvailableDistricts { get; set; }
		public IList<SelectListItem> AvailableTimeSpans { get; set; }
    }
}